package com.chongchong.core.tool.utils;

import java.util.Date;
import java.util.Random;

/**
 * @author luocheng
 * @description: 密码生成工具
 * @date 2022/9/5 20:47
 */
public class PasswordUtils {

	/**
	 * 大小写字母
	 */
	public final static String[] word = {
		"a", "b", "c", "d", "e", "f", "g",
		"h", "j", "k", "m", "n",
		"p", "q", "r", "s", "t",
		"u", "v", "w", "x", "y", "z",
		"A", "B", "C", "D", "E", "F", "G",
		"H", "J", "K", "M", "N",
		"P", "Q", "R", "S", "T",
		"U", "V", "W", "X", "Y", "Z"
	};

	/**
	 * 数字 1-9
	 */
	public final static String[] num = {
		"0","1", "2", "3", "4", "5", "6", "7", "8", "9"
	};

	/**
	 * 特殊字符
	 */
	public final static String[] symbol = {
		"!", "@", "#", "$", "%", "^", "&", "*",
		"(", ")", "{", "}", "[", "]", ".", "?", "_",
		"-", "|"
	};

	public final static String[] type = {
		"word", "num", "symbol"
	};

	/**
	 * 随机生成 8-12位包含 字母、数字、特殊字符 的密码
	 *
	 * @return
	 */
	public static String randomPW() {
		StringBuffer stringBuffer = new StringBuffer();
		Random random = new Random(new Date().getTime());
		String flag = type[random.nextInt(type.length)];
		// 输出长度 6 位
		int length =6;
		for (int i = 0; i < length; i++) {
			switch (flag) {
				case "num":
					stringBuffer.append(num[random.nextInt(num.length)]);
					break;
				default:
					stringBuffer.append(word[random.nextInt(word.length)]);
					break;
			}
			flag= type[random.nextInt(type.length)];
		}
		return stringBuffer.toString();
	}

	public static void main(String[] args) throws Exception {
		System.out.println(randomPW());
	}
}
